// 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc语法提示教程：https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
module.exports = {
	_before: function () { // 通用预处理器

	},
	/**
	 * 根据用户名推送消息
	 * @param appId {string} 推送的平台appId
	 * @param userId {string/array} 用户id
	 * @param title {string} 消息标题
	 * @param content {string} 消息内容
	 * @param:payLoad {object} 透传消息，type {int} 类型：1：订单，其他字段自定义，2：待接单订单，3：骑手接单后，4：骑手接单后推送给骑手，5：商家自动派单
	 * @returns {object} 返回值描述，推送结果
	 */
	
	async sendMessage(appId,userId,title,content,payLoad) {
		const dbJQL = uniCloud.databaseForJQL({
		clientInfo: this.getClientInfo()
		});
		
		const cmd = dbJQL.command;
	 var data =  await dbJQL.collection('uni-id-device').where({user_id:userId,is_login_out:false,push_clientid:cmd.neq(null)}).get();
		var resultData = data.data;
		var clientId = [];
		for(var i=0;i<resultData.length;i++){
			clientId.push(resultData[i].push_clientid);
		}
		
		if(clientId.length > 0){
			const uniPush = uniCloud.getPushManager({appId:appId}) //注意这里需要传入你的应用appId
			return uniPush.sendMessage({
					"push_clientid": clientId,
					"title": title,
					"content": content,
					"payload": payLoad
				})
		}else{
			return '未找到对应的商家cid'
		}
	},
	
	
	/**
	 * 作用：根据appid推送消息
	 * appid:项目的appid
	 */
	async sendMessageToManagement(device,orderNo){
		var clientId = [];
		for (var i = 0; i < device.length; i++) {
			clientId.push(device[i].push_clientid);
		}
		if (clientId.length > 0) {
			const uniPush = uniCloud.getPushManager({
				appId: '__UNI__EE8F8DE',
			}) //注意这里需要传入你的应用appId
			return uniPush.sendMessage({
				"push_clientid": clientId,
				"title": '新订单',
				"content": '有新订单',
				"payload": {
					type:1,
					orderNo:orderNo
				}
			})
		} else {
			return '未找到对应的cid'
		}
	},
	
	
	/**
	 * 根据用户名推送消息 -商家推送给骑手端
	 * @param appId {string} 推送的平台appId
	 * @param userId {array} 用户id 一定要是数组！
	 * @param title {string} 消息标题
	 * @param content {string} 消息内容
	 * @param:payLoad {object} 透传消息，type {int} 类型：1：订单，其他字段自定义
	 * @returns {object} 返回值描述，推送结果 	*/
	async sendMessageByClientId(appId, userId, title, content, payLoad) {
		const dbJQL = uniCloud.databaseForJQL({
			clientInfo: this.getClientInfo()
		});
		const cmd = dbJQL.command;
		var data = await dbJQL.collection('uni-id-device').where({user_id: cmd.in(userId) ,is_login_out: false,push_clientid: cmd.neq(null)}).get();
		
		var resultData = data.data;
		var clientId = [];
		for (var i = 0; i < resultData.length; i++) {
			clientId.push(resultData[i].push_clientid);
		}
		if (clientId.length > 0) {
			const uniPush = uniCloud.getPushManager({
				appId: appId
			}) //注意这里需要传入你的应用appId
			return uniPush.sendMessage({
				"push_clientid": clientId,
				"title": title,
				"content": content,
				"payload": payLoad
			})
		} else {
			return '未找到对应的cid'
		}
	}
}
